"""
测试方法流程：
    1. 实例化session对象
    2. session对象发请求
    3. 断言
    4. 关闭session

* 获取验证码： http://tpshop-test.itheima.net/index.php?m=Home&c=User&a=verify
* 登录： http://tpshop-test.itheima.net/index.php?m=Home&c=User&a=do_login
"""
import unittest
import requests


class TestTPShopLogin(unittest.TestCase):
    def test01_login_success(self):
        print('test_login_success')
        # 1. 实例化session对象
        session = requests.Session()
        # 2. session对象发请求，断言
        # a. 先发图片验证码请求，断言
        resp = session.get('http://tpshop-test.itheima.net/index.php?m=Home&c=User&a=verify')
        print(resp.headers.get('Content-Type'))  # 获取响应头
        self.assertEqual('image/png', resp.headers.get('Content-Type'))

        # b. 发送登陆请求，断言
        login_info = {
            'username': '13344445555',
            'password': '123456',
            'verify_code': '8888'
        }
        resp = session.post('http://tpshop-test.itheima.net/index.php?m=Home&c=User&a=do_login',
                            data=login_info)

        print(resp.json())
        self.assertEqual(200, resp.status_code)
        self.assertEqual(1, resp.json().get('status'))
        self.assertIn('成功', resp.json()['msg'])

        # 4. 关闭session
        session.close()

    def test02_login_user_err(self):
        print('test_login_user_err')
        # 1. 实例化session对象
        session = requests.Session()
        # 2. session对象发请求，断言
        # a. 先发图片验证码请求，断言
        resp = session.get('http://tpshop-test.itheima.net/index.php?m=Home&c=User&a=verify')
        print(resp.headers.get('Content-Type'))  # 获取响应头
        self.assertEqual('image/png', resp.headers.get('Content-Type'))

        # b. 发送登陆请求，断言
        login_info = {
            'username': '44444444444',
            'password': '123456',
            'verify_code': '8888'
        }
        resp = session.post('http://tpshop-test.itheima.net/index.php?m=Home&c=User&a=do_login',
                            data=login_info)

        print(resp.json())
        self.assertEqual(200, resp.status_code)
        self.assertEqual(-1, resp.json().get('status'))
        self.assertIn('账号不存在', resp.json()['msg'])

        # 4. 关闭session
        session.close()

    def test03_login_pwd_err(self):
        print('test_login_pwd_err')
        # 1. 实例化session对象
        session = requests.Session()
        # 2. session对象发请求，断言
        # a. 先发图片验证码请求，断言
        resp = session.get('http://tpshop-test.itheima.net/index.php?m=Home&c=User&a=verify')
        print(resp.headers.get('Content-Type'))  # 获取响应头
        self.assertEqual('image/png', resp.headers.get('Content-Type'))

        # b. 发送登陆请求，断言
        login_info = {
            'username': '13344445555',
            'password': '1234abc',
            'verify_code': '8888'
        }
        resp = session.post('http://tpshop-test.itheima.net/index.php?m=Home&c=User&a=do_login',
                            data=login_info)

        print(resp.json())
        print(resp.json())
        self.assertEqual(200, resp.status_code)
        self.assertEqual(-2, resp.json().get('status'))
        self.assertIn('密码错误', resp.json()['msg'])

        # 4. 关闭session
        session.close()
